<?php
/**
* 
*/
class Water
{	
	//logo需要加的水印图片
	public $waterImg = 'logo.png';
	// 水印位置  1 左上 ... 5 中间 6 中右  ..9 右下
	public $pos = 9;
	// 透明度
	public $pct = 80;
	// 构造函数
	public function __construct()
	{
		
	}

	// 功能集合
	public function water($file)
	{
		//① 根据传入的图片名产生图片资源
		$img = $this->getImgRes($file);
		//② 生成水印图片资源
		$logo = $this->getImgRes($this->waterImg);
		//③ 算出水印位置
		$pos = $this->getPos($img,$logo);
		//④ 获得logo 图片的信息
		$Infologo = getimagesize($this->waterImg);
		// print_r($logoInfo);
		//Array
			// (
			//     [0] => 217
			//     [1] => 60
			//     [2] => 3
			//     [3] => width="217" height="60"
			//     [bits] => 8
			//     [mime] => image/png
			// )
		
		// ⑤ 判断图片是否为png如果为执行 以下语句 否则执行 else里面的语句
		if ($Infologo[2]==3) {
			// 如果是png图片直接复制  dst_x　　？？？
			// imagecopy(dst_im, src_im, dst_x, dst_y, src_x, src_y, src_w, src_h)
			imagecopy($img, $logo, $pos[0], $pos[1], 0, 0, imagesx($logo), imagesy($logo));

		}else{
			imagecopymerge($img, $logo, $pos[0], $pos[1], 0, 0, imagesx($logo), imagesy($logo),$this->pct);
		}

		//⑥ 取得原图的信息
		$Imginfo = getimagesize($file);
		print_r($Imginfo);
		//通过 str_replace 把'/'替换过成空格 
		$func = str_replace('/', '', $Imginfo['mime']);
		print_r($func);
		//??
		return $func($img,$file);

	}

	/**
	 * [①取得图片的资源]
	 * @param  [type] $file [description]
	 * @return [type]       [description]
	 */
	public function getImgRes($file)
	{	//获得传入的图片的信息
		$info = getimagesize($file);
		// print_r($info);  
		// 打印出来获得的数组：  Array
								// (
								//     [0] => 1002
								//     [1] => 926
								//     [2] => 2
								//     [3] => width="1002" height="926"
								//     [bits] => 8
								//     [channels] => 3
								//     [mime] => image/jpeg
								// )
		// 从获得的图片信息中 拆分图像的MIME信息 然后获取到图片的后缀名
		// 拆分mime信息 获得后缀
		$type = explode('/', $info['mime']);
		// print_r($type);
		// 打印出来的信息中获得：
		// Array
		// 	(
		// 	    [0] => image
		// 	    [1] => png
		// 	)
		
		// 组合图片 路径 生成图片的PHP函数  把它作为图片的画布
		$func = 'imagecreatefrom'.$type['1'];
		//使用变量函数的特性产生图像资源
		// print_r($func);
		return $func($file);   //等同于---->imagecreatefrom($file);
	}
		/**
		 * [③ 水印位置]
		 * @param  [type] $img  [description]
		 * @param  [type] $logo [description]
		 * @return [type]       [description]
		 */
		private function getPos($img,$logo)
		{
			// 获得原始图片和logo图片的宽高
			$img_w = imagesx($img);
			$img_h = imagesy($img);
			$logo_w = imagesx($logo);
			$logo_h = imagesy($logo);

			// 设置初始默认位置
			$x=$y = 20;
			// 用switch循环选择 logo图片 所对应的显示位置
			switch ($this->pos) {
				case 1://左上角
					
					break;
				case 2://上中
					$x = ($img_w-$logo_w)/2;
					break;
				case 3://右上角
					$x = $img_w-$logo_w-20;
					break;
				case 4://中左
					$y = ($img_h-$logo_h)/2;
					break;
				case 5://中中
					$x = ($img_w-$logo_w)/2;
					$y = ($img_h-$logo_h)/2;
					break;
				case 6://中右角
					$x = $img_w-$logo_w-20;
					$y = ($img_h-$logo_h)/2;
					break;
				case 7://左下角
					$y = $img_h-$logo_h-20;
					break;
				case 8://下中
					$x = ($img_w-$logo_w)/2;
					$y = $img_h-$logo_h-20;
					break;
				default:	//右下
					$x = $img_w-$logo_w-20;
					$y = $img_h-$logo_h-20;
					
			}
			return array($x,$y);
		}


}




?>